<?php
namespace app\adminapi\logic;
class AuthLogic{
    public static function AuthLogic(){
        # 获取他访问的控制器
        $controller = request()->controller();
        # 获取访问的方法
        $action = request()->action();
        # 拼接
        $path = $controller . "/" . $action;
        # 判断他的控制和方法是否在首页和退出里面。有就返回true
        if(in_array($path,["Index/index","Login/logout"])){
            return true;
        }
        # 获取到他登录的id
        $user_id = input("user_id");
        # 根据id查询到一条数据
        $admin = \app\common\model\Admin::find($user_id);
        # 获取到角色id
        $role_id = $admin["role_id"];
        # 判断他的角色id是否等于1 或者 获取到的管理员是否为admin 超级管理员，是 就返回true
        if($role_id == 1 || $admin["username"] == "admin"){
            return true;
        }
        # 根据角色id查询到一条角色数据
        $auth_role = \app\common\model\Role::where("id",$role_id)->find();
        # 再以逗号将获取到的角色数据里面的权限id分隔成数组
        $auth_role_id = explode(",",$auth_role["role_auth_ids"]);
        # 根据控制和方法名称获取到权限数据表里面的一条数据
        $auth = \app\common\model\Auth::where("auth_c",$controller)->where("auth_a",$action)->find();
        # 取出权限列表id
        $auth_id = $auth["id"];
        # 判断获取到的权限id是否等于角色表里面的权限id，有就返回true
        if(in_array($auth_id,$auth_role_id)){
            return true;
        }
        # 以上都没有 返回false 没有权限访问
        return false;
    }
}